package cc1_XML_read;
import java.util.ArrayList;
import java.util.List;

import org.w3c.dom.*;

import javax.xml.parsers.*;

public class LeeListaPrecio {
	static final String ARCHIVO = "listaPreciosTEST.xml";
	Document doc;
	
	void crearDocumento(){
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder;
		
		try {
			builder = factory.newDocumentBuilder();
			doc = builder.parse(ARCHIVO);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	ListaPrecio leerElemento(){
		
		
		ListaPrecio listaPrecio = new ListaPrecio();
		
		
		System.out.println("LeerXML: "+ARCHIVO);
		Element root = doc.getDocumentElement();
		
		System.out.println("Lista numero: "+root.getAttribute("numero"));
		int id_listaPrecio=Integer.valueOf(root.getAttribute("numero"));
		listaPrecio.setId_listaPrecio(id_listaPrecio);
		System.out.println("Lista tipo: "+root.getAttribute("tipo"));
		listaPrecio.setTipoLista(root.getAttribute("tipo"));
		
		
		//FALTA LEER FECHA
		//listaPrecio.setFecha(fecha);
		
		ProveedorListaPrecio proveedor= new ProveedorListaPrecio();
		listaPrecio.setP(proveedor);
		
		NodeList listOfProveedor = doc.getElementsByTagName("Proveedor");
		//System.out.println("lenght 1?:"+listOfProveedor.getLength());
		//for(int i=0; i<listOfProveedor.getLength(); i++){
			//System.out.println("posicion "+i);
			Element prmCon = (Element)listOfProveedor.item(0);
			//System.out.println(" codigo: "+prmCon.getAttribute("codigo"));
			//System.out.println("marca: "+prmCon.getAttribute("marca"));
			//System.out.println("precio: "+prmCon.getAttribute("precio"));
			//System.out.println("stock: "+prmCon.getAttribute("stockDisponible"));
			String cuil=prmCon.getElementsByTagName("Cuil").item(0).getTextContent();
			System.out.printf("Cuil: "+cuil);
			proveedor.setCuil(cuil);
			String razonSocial=prmCon.getElementsByTagName("RazonSocial").item(0).getTextContent();
			System.out.printf("Razon Social: "+razonSocial);
			proveedor.setRazonSocial(razonSocial);
			
			//FALTA DIRECCION POSTAL DEL PROVEEDOR
			//proveedor.setDireccion(direccion);
			
			//System.out.printf("%nurl: %s%n",prmCon.getElementsByTagName("url").item(0).getTextContent());
		//}
		
			
		System.out.println(">-------");
		
		
		NodeList listOfVigencia = doc.getElementsByTagName("Vigencia");
		for(int j=0; j<listOfVigencia.getLength(); j++){
			System.out.println("posicion "+j);
			Element prmCon1 = (Element)listOfVigencia.item(j);
			//System.out.println(" codigo: "+prmCon.getAttribute("codigo"));
			//System.out.println("marca: "+prmCon.getAttribute("marca"));
			//System.out.println("precio: "+prmCon.getAttribute("precio"));
			//System.out.println("stock: "+prmCon.getAttribute("stockDisponible"));
			
			
			//TERMINAR: FALTA FECHA EN LISTAPRECIO
			System.out.printf("Fecha: "+prmCon1.getElementsByTagName("Fecha").item(0).getTextContent());
			//listaPrecio.setFecha(fecha);
			
	
			
			String termino=prmCon1.getElementsByTagName("Termino").item(0).getTextContent();
			System.out.printf("Termino: "+termino);
			listaPrecio.setTermino(Integer.valueOf(termino));
			
			//System.out.printf("%nurl: %s%n",prmCon.getElementsByTagName("url").item(0).getTextContent());
		}
		System.out.println("------- ---");
		
		
		NodeList listOfReemplaza = doc.getElementsByTagName("Reemplaza");
		for(int i=0; i<listOfReemplaza.getLength(); i++){
			System.out.println("posicion "+i);
			Element prmCon1 = (Element)listOfReemplaza.item(i);
			
			NodeList a = prmCon1.getElementsByTagName("ListaReemplazada");
			//solo una posicion
			Element prmCon2 = (Element)a.item(0);
			
			int id_listareemplazo=Integer.valueOf(prmCon2.getAttribute("numero"));
			System.out.println("numero:"+id_listaPrecio);
			listaPrecio.setId_listaReemplazo(id_listareemplazo);
			
			//No se usa:
			System.out.println("tipo (no se usa):"+prmCon2.getAttribute("tipo"));
			
				
		}
		System.out.println("-----CONDICIONES DE VENTA---- ---");
		//TERMINAR: Verificar que es correcto inicializarlo como "ArrayList"
		List<CondicionVentaListaPrecio> listCondicionVenta=new ArrayList<CondicionVentaListaPrecio>();
		CondicionVentaListaPrecio condicionVenta1=new CondicionVentaListaPrecio();
		listaPrecio.setListCondicionVenta(listCondicionVenta);
		
		NodeList listOfCondicionesDeVenta = doc.getElementsByTagName("CondicionesDeVenta");
			Element prmCon1 = (Element)listOfCondicionesDeVenta.item(0);
			NodeList a = prmCon1.getElementsByTagName("PagoContado");
			Element prmCon2 = (Element)a.item(0);
			NodeList b = prmCon2.getElementsByTagName("Descuento");
			Double descuento=Double.valueOf(b.item(0).getTextContent());
			System.out.println("Descuento: "+descuento);

			condicionVenta1.setTipoPago("PagoContado");
			condicionVenta1.setCantDias(0);
			condicionVenta1.setRecargo(Double.valueOf("0"));
			condicionVenta1.setDescuento(descuento);
		
			listCondicionVenta.add(condicionVenta1);//Contado
			System.out.println("--------------------------------");
		
		
		NodeList listOfFinanciacion = doc.getElementsByTagName("Financiacion");
		for(int i=0; i<listOfFinanciacion.getLength(); i++){
			CondicionVentaListaPrecio condicionVenta2=new CondicionVentaListaPrecio();
			condicionVenta2.setTipoPago("Financiacion");
			//System.out.println("posicion de Financiacion "+i);
			Element prmCon11 = (Element)listOfFinanciacion.item(i);
			Integer cantDias=Integer.valueOf(prmCon11.getAttribute("dias"));
			System.out.println("dias:"+cantDias);
			condicionVenta2.setCantDias(cantDias);
			NodeList a1 = prmCon11.getElementsByTagName("Recargo");
			//solo una posicion
			Element prmCon21 = (Element)a1.item(0);
			Double recargo=Double.valueOf(prmCon21.getTextContent());
			System.out.println("recargo:"+recargo);
			condicionVenta2.setRecargo(recargo);
			condicionVenta2.setDescuento(Double.valueOf("0"));
	//agregar a list:
			listCondicionVenta.add(condicionVenta2);//Condiciones de ventas financiadas
		}
		System.out.println("---------ITEMS----------");
	
		List<ItemListaPrecio> listItem=new ArrayList<ItemListaPrecio>();
		listaPrecio.setListItem(listItem);
		
		NodeList listOfItem = doc.getElementsByTagName("Item");
		for(int i=0; i<listOfItem.getLength(); i++){
			
			ItemListaPrecio item = new ItemListaPrecio();
			//System.out.println("Item posicion "+i);
			Element prmCon11 = (Element)listOfItem.item(i);
			String serie=prmCon11.getAttribute("serie");
			System.out.println("serie:"+serie);
			item.setSerie(serie);
			String sufijo=prmCon11.getAttribute("sufijo");
			System.out.println("sufijo:"+sufijo);
			
			NodeList a1 = prmCon11.getElementsByTagName("Marca");
			//solo una posicion
			Element prmCon21 = (Element)a1.item(0);
			String marca=prmCon21.getTextContent();
			System.out.println("Marca:"+marca);
			item.setMarca(marca);
			
			a1 = prmCon11.getElementsByTagName("Origen");
			//solo una posicion
			 prmCon21 = (Element)a1.item(0);
			 String origen=prmCon21.getTextContent();
			System.out.println("Origen:"+origen);
			item.setOrigen(origen);
			
			a1 = prmCon11.getElementsByTagName("Precio");
			//solo una posicion
			 prmCon21 = (Element)a1.item(0);
			 Integer precioLista=Integer.valueOf(prmCon21.getTextContent());
			System.out.println("Precio:"+precioLista);
			item.setPrecioLista(precioLista);
			
			//TERMINAR FALTA LEER LA CANTIDAD
		}
		System.out.println("------- ---");
	
		return listaPrecio;
	}
	
	public static void main(String[] args) {
		LeeListaPrecio ins = new LeeListaPrecio();
		ins.crearDocumento();
		ins.leerElemento();
	}

}
